package com.lxl.priv.bak;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class ModifyCSVHeaderInPlace {
    public static void main(String[] args) {
        String filePath = "D:\\tmp\\merged.csv"; // 原文件路径

        try {
            // 读取 CSV 文件
            FileReader reader = new FileReader(filePath);
            CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT.withFirstRecordAsHeader());

            // 获取现有头部
            List<String> headers = new ArrayList<>(csvParser.getHeaderMap().keySet());

            // 修改头部（例如，将第一个头部改为 "NewHeader1"）
            headers.set(0, "NewHeader1");
            // 可以根据需要修改其他头部...

            // 准备写入新的 CSV 文件（首先备份）
            String tempFilePath = "temp.csv";
            try (CSVPrinter csvPrinter = new CSVPrinter(new FileWriter(tempFilePath), CSVFormat.DEFAULT.withHeader(headers.toArray(new String[0])))) {
                // 写入新的头部
                csvPrinter.printRecord(headers);

                // 写入所有记录
                for (CSVRecord record : csvParser) {
                    csvPrinter.printRecord(record);
                }
            }

            // 关闭解析器
            csvParser.close();
            reader.close();

            // 替换原文件
            Files.move(Paths.get(tempFilePath), Paths.get(filePath), java.nio.file.StandardCopyOption.REPLACE_EXISTING);

            System.out.println("CSV header modified successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
